#pragma once
#include "Socket.h"
#include "EventLoop.h"

class Acceptor
{
private:
    Socket _socket;   // 专门用于接收新链接的socket
    EventLoop *_loop; // Acceptot用的就是用户定义的那个baseloop,就是mainloop
    Channel _channel; // 专门用于监听新连接的channel

    using AcceptCallback = std::function<void(int)>;
    AcceptCallback _accept_callback; // 新连接的回调函数

private:
    void HandleRead();
    int CreateServer(uint64_t port);

public:
    Acceptor(EventLoop *loop, int port);

    // 1. 设置新链接的回调函数
    void SetAcceptCallback(const AcceptCallback &cb);

    void Listen();
};